﻿using DataAccess.IniciativaLaboral;
using BusinessLayer.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BusinessEntities.IniciativaVecinal;


namespace BusinessLayer.IniciativaVecinal
{
    public class IniciativaVecinalBL : IIniciativaVecinalBL
    {
        IIniciativaVecinalRepository repository;

        public IniciativaVecinalBL()
        {
            repository = new IniciativaLaboralRepository(new SICMAContext());
        }

        #region Buscar Iniciativa Vecinal
        public IEnumerable<tbIniciativaVecinal> BuscarIV( int Tipo, int UsuarioId, int Estado, DateTime FechaInicio, DateTime FechaFin ) 
        {

            IEnumerable<tbIniciativaVecinal> response = null;

            try
            {

                switch (Tipo)
                {
                    case 1:
                        if ( UsuarioId > 0 && FechaInicio != null && FechaFin != null)
                        {
                            response = repository.BuscarIVPorFecha(UsuarioId, FechaInicio, FechaFin);
                        }
                        break;

                    case 2:
                        response = repository.BuscarPorEstado(Estado);
                        break;
                }
            }
            catch(Exception ex)
            {
                throw ex;
            }
           return response;
        }
        #endregion
        #region Registrar Iniciativa Vecinal
        public int RegistrarIV(tbIniciativaVecinal iv)
        {
            int ID = -1;
            
            try 
            {
                
                ID = repository.ObtenerUltimoId();
                //Genera codigo con el siguiente formato 201505001
                //Los 4 primeros digitos es al anio actual
                //Los siguientes 2 digitos el mes
                //Los ultimos digitos es un numero correlativo 
                string Codigo = string.Concat( ConstantsBL.IV_CODE_PREFIX, DateTime.Now.ToString( ConstantsBL.IV_CODE_DATEFORMAT ), ID.ToString().PadLeft(3, '0'));

                iv.NumeroIV = Codigo;

                repository.RegistrarIV(iv);
            }
            catch(Exception ex)
            {
                throw ex ;
            }
            return ID;
        }
        #endregion
        #region Actualizar Iniciativa Vecinal
        public int ActualizarIV(tbIniciativaVecinal iv)
        {
            int ID = -1;

            try
            {
                repository.ActualizarIV(iv);
                ID = 1;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return ID;
        }
        #endregion
    }
}
